package fun.chutianshu;

// 创建一个抽象的宠物基类
// 第一层 Pet 抽象
// 第二层：要求派生出猫类、狗类、......  抽象
// 第三层：具体能用的实体类，具体种类，比如 哈士奇、边牧、金渐层、英短、缅因、
// 要求：在主类中，建一个宠物乐园（所以具体宠物对象放在一个数组中），实现一键喂食
public abstract class Pet {

}

// 类和对象，模板和实例之间的关系
// 面向对象三大特性：1. 封装（保护数据安全）；2. 继承（子类可以继承父类中的成员；并且子类 is a 父类，可以用父类对象引用子类对象）
// 3. 多态 （通过同一代码，执行不同的操作）
// 抽象类: 包含抽象方法的类，不能用来创建实体对象
// 抽象方法： 用 abstract 描述的，并且没有方法体的方法
//
// Dog d1;// 定义了一个Dog 类对象 d1 ，也可以说 “声明”了一个Dog类对象 d1
// Husky d2 = new Husky(); // 定义并创建了一个 Husky 类对象 d2
// 定义或声明一个类对象，只为对象名开辟了内存空间，并未创建实体对象的内容
// 只有通过 new 关键字调用构造方法后，才会在内存中创建出实体对象
// 对象都是引用类型；系统数据类型，都是值类型

// int a = 5;
// int b = a;
// b =10;

// Dog d1;
// Husky d2 = new Husky();  // “”
// d1 = d2;  // ""
// d2.setName(“二哈”);
// d1.getName()?

// 接口：因为java不允许类的多继承，但有些功能需要跨类树多态，接口由此而生
// 只包含抽象方法的一种结构，可以被类实现
// 实现了接口的类，需要把接口中的抽象方法都实体化
// 接口也可以实现多态，可以通过接口名，引用实现了它的类对象